/*
 * @Author: mofan 1358526162@qq.com
 * @Date: 2023-05-04 10:55:39
 * @LastEditors: mofan 1358526162@qq.com
 * @LastEditTime: 2023-05-04 11:12:16
 * @FilePath: \borun-admin\src\utils\htmlToPdf.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
//js文档
import html2canvas from 'html2Canvas'
import JsPDF from 'jspdf'

export default {
  install(Vue, options) {
    Vue.prototype.getPdf = function(id, title) {
      html2canvas(document.querySelector('#' + id),
      {
        allowTaint: true,
        useCORS: true,
      }
      ).then(function (canvas) {
         let contentWidth = canvas.width
         let contentHeight = canvas.height
         //一页pdf显示html页面生成的canvas高度;
         let pageHeight = contentWidth / 592.28 * 841.89
         //生成pdf的html页面高度
         let leftHeight = contentHeight
         //页面偏移
         let position = 0
         //a4纸的尺寸[595.28,841.89]，html页面生成的canvas在pdf中图片的宽高
         let imgWidth = 595.28
         let imgHeight = 592.28 / contentWidth * contentHeight
         // canvas.crossOrigin="anonymous";
         let pageData = canvas.toDataURL('image/jpeg', 2.0);
         let PDF = new JsPDF('', 'pt', 'a4')
         //有两个高度需要区分，一个是html页面的实际高度，和生成pdf的页面高度(841.89)
         //当内容未超过pdf一页显示的范围，无需分页
         if (leftHeight < pageHeight) {
           PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
         } else {
         while (leftHeight > 0) {
           PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
           leftHeight -= pageHeight
           position -= 841.89
           if (leftHeight > 0) {
           //避免添加空白页
           PDF.addPage()
           }
         }
       }
       PDF.save(title + '.pdf')//导出PDF
     })
   }
 }
}